//
//  ShuffleTransformers.m
//  Cog
//
//  Created by Vincent Spader on 2/27/09.
//  Copyright 2009 __MyCompanyName__. All rights reserved.
//

#import "ShuffleTransformers.h"

#import "Logging.h"

@implementation ShuffleImageTransformer

+ (Class)transformedValueClass {
	return [NSImage class];
}
+ (BOOL)allowsReverseTransformation {
	return NO;
}

// Convert from string to RepeatMode
- (id)transformedValue:(id)value {
	DLog(@"Transforming value: %@", value);

	if(value == nil) return nil;

	ShuffleMode mode = (ShuffleMode)[value integerValue];

	if(mode == ShuffleOff) {
		return [NSImage imageNamed:@"shuffleOffTemplate"];
	} else if(mode == ShuffleAlbums) {
		return [NSImage imageNamed:@"shuffleAlbumTemplate"];
	} else if(mode == ShuffleAll) {
		return [NSImage imageNamed:@"shuffleOnTemplate"];
	}

	return nil;
}

@end

@implementation ShuffleModeTransformer

+ (Class)transformedValueClass {
	return [NSNumber class];
}
+ (BOOL)allowsReverseTransformation {
	return YES;
}

- (id)initWithMode:(ShuffleMode)s {
	self = [super init];
	if(self) {
		shuffleMode = s;
	}

	return self;
}

// Convert from RepeatMode to BOOL
- (id)transformedValue:(id)value {
	DLog(@"Transforming value: %@", value);

	if(value == nil) return nil;

	ShuffleMode mode = (ShuffleMode)[value integerValue];

	if(shuffleMode == mode) {
		return @(YES);
	}

	return @(NO);
}

- (id)reverseTransformedValue:(id)value {
	if(value == nil) return nil;

	BOOL enabled = [value boolValue];
	if(enabled) {
		return @(shuffleMode);
	} else if(shuffleMode == ShuffleOff) {
		return @(ShuffleAll);
	} else {
		return @(ShuffleOff);
	}
}

@end
